home *** CD-ROM | disk | FTP | other *** search
/ HTBasic 9.3 / HTBasic 9.3.iso / 83win / data1.cab / Basic_Plus_Examples / XYWDGT < prev   
Text File  |  2001-03-02  |  5KB  |  159 lines

  1. 10    ! *****************************************************************
  2. 20    ! Example: XY GRAPH Widget
  3. 30 !
  4. 40    ! This program displays two random traces and allows you
  5. 50    ! to set various trace marker modes on the two traces.
  6. 60 !
  7. 70    ! ******************************************************************
  8. 80 !
  9. 90       RANDOMIZE INT(10^7*FRACT(TIMEDATE))
  10. 100 !
  11. 110    ! Define colors
  12. 120 !
  13. 130       INTEGER Black,White,Red,Yellow,Green,Cyan,Blue,Magenta
  14. 140       DATA 0,1,2,3,4,5,6,7
  15. 150       READ Black,White,Red,Yellow,Green,Cyan,Blue,Magenta
  16. 160 !
  17. 170    ! Variables Definitions:
  18. 180 !
  19. 190       INTEGER N
  20. 200       REAL R
  21. 210 !
  22. 220    ! Trace data buffers
  23. 230 !
  24. 240       REAL X(0:20),Y1(0:20),Y2(0:20)
  25. 250 !
  26. 260    ! SYSTEM MENU entries
  27. 270  !
  28. 280       DIM M$(0:5)[16]
  29. 290       DATA "No Markers","One Marker","Two Markers"
  30. 300       DATA "Delta Markers","Ratio Markers","Quit"
  31. 310       READ M$(*)
  32. 320 !
  33. 330   ! Variables to hold display coordinates
  34. 340 !
  35. 350       INTEGER D(1:4),Cursor,Dw,Dh,Gx,Gy,Gw,Gh
  36. 360 !
  37. 370   ! Get display size
  38. 380 !
  39. 390       GESCAPE CRT,3;D(*)
  40. 400       Dw=D(3)-D(1)
  41. 410       Dh=D(4)-D(2)
  42. 420 !
  43. 430       CLEAR SCREEN
  44. 440 !
  45. 450   ! Create GRAPH dimensions
  46. 460 !
  47. 470       Gw=Dw*.7
  48. 480       Gh=Dh
  49. 490       Gx=(Dw-Gw)/2
  50. 500       Gy=(Dh-Gh)/2
  51. 510 !
  52. 520   ! Build XY GRAPH.
  53. 530 !
  54. 540       ASSIGN @Graph TO WIDGET "XY GRAPH";SET ("VISIBLE":0)
  55. 550       CONTROL @Graph;SET ("SYSTEM MENU":M$(*),"MINIMIZABLE":1)
  56. 560       CONTROL @Graph;SET ("TITLE":" Example: XY GRAPH Widget")
  57. 570       CONTROL @Graph;SET ("SHARED X":1,"TRACE COUNT":2)
  58. 580       CONTROL @Graph;SET ("SHOW GRID":1,"TRACE BACKGROUND":White)
  59. 590       CONTROL @Graph;SET ("X":Gx,"Y":Gy+50,"WIDTH":Gw,"HEIGHT":.65*Gh)
  60. 600 !
  61. 610   ! Set X axis attributes
  62. 620 !
  63. 630       CONTROL @Graph;SET ("CURRENT AXIS":"X","ORIGIN":0,"RANGE":1)
  64. 640 !
  65. 650   ! Set Y axis attributes
  66. 660 !
  67. 670       CONTROL @Graph;SET ("CURRENT AXIS":"Y","ORIGIN":0,"RANGE":100)
  68. 680 !
  69. 690   ! Set up X data
  70. 700 !
  71. 710       FOR N=0 TO 20
  72. 720           X(N)=N/20
  73. 730       NEXT N
  74. 740       CONTROL @Graph;SET ("CURRENT TRACE":1,"X DATA":X(*))
  75. 750 !
  76. 760   ! Draw the curves
  77. 770 !
  78. 780       R=0
  79. 790       FOR N=0 TO 20
  80. 800           Y1(N)=R
  81. 810           R=R+6*RND
  82. 820       NEXT N
  83. 830       CONTROL @Graph;SET ("TRACE PEN":Red,"Y DATA":Y1(*))
  84. 840 !
  85. 850       R=0
  86. 860       FOR N=0 TO 20
  87. 870           Y2(N)=R
  88. 880           R=R+9*RND
  89. 890       NEXT N
  90. 900       CONTROL @Graph;SET ("CURRENT TRACE":2,"Y DATA":Y2(*))
  91. 910       CONTROL @Graph;SET ("TRACE PEN":Blue)
  92. 920 !
  93. 930   ! Loop and wait to exit
  94. 940 !
  95. 950       CONTROL @Graph;SET ("VISIBLE":1)
  96. 960       ON EVENT @Graph,"SYSTEM MENU" GOSUB Handler
  97. 970       DISP "WAITING"
  98. 971       WAIT 3
  99. 972       DISP "DONE"
  100. 973       CONTROL @Graph;SET ("STACKING ORDER":1)
  101. 980       LOOP
  102. 990           WAIT FOR EVENT
  103. 1000       END LOOP
  104. 1010       STOP
  105. 1020 !
  106. 1030  ! *************** End of Main Program **********************
  107. 1040  !
  108. 1050  ! This handler traps the SYSTEM MENU event and determines which
  109. 1060  ! entry caused the trap. It then performs the appropriate actions.
  110. 1070  !
  111. 1080  Handler:    !
  112. 1090       STATUS @Graph;RETURN ("SYSTEM MENU EVENT":N)
  113. 1100       SELECT N
  114. 1110  !
  115. 1120  ! No markers
  116. 1130  !
  117. 1140       CASE 0
  118. 1150           CONTROL @Graph;SET ("MARKER":"NONE")
  119. 1160  !
  120. 1170  ! One marker
  121. 1180  !
  122. 1190       CASE 1
  123. 1200           CONTROL @Graph;SET ("MARKER":"ONE","MARKER1 TRACE":1)
  124. 1210           CONTROL @Graph;SET ("MARKER1 X":X(10),"MARKER1 Y":Y1(10))
  125. 1220  !
  126. 1230  ! Two markers
  127. 1240  !
  128. 1250       CASE 2
  129. 1260           CONTROL @Graph;SET ("MARKER":"TWO")
  130. 1270           CONTROL @Graph;SET ("MARKER1 TRACE":1,"MARKER2 TRACE":2)
  131. 1280           CONTROL @Graph;SET ("MARKER1 X":X(10),"MARKER2 X":X(10))
  132. 1290           CONTROL @Graph;SET ("MARKER1 Y":Y1(10),"MARKER2 Y":Y2(10))
  133. 1300  !
  134. 1310  ! Delta markers
  135. 1320  !
  136. 1330       CASE 3
  137. 1340           CONTROL @Graph;SET ("MARKER":"DELTA")
  138. 1350           CONTROL @Graph;SET ("MARKER1 TRACE":1,"MARKER2 TRACE":2)
  139. 1360           CONTROL @Graph;SET ("MARKER1 X":X(10),"MARKER2 X":X(10))
  140. 1370           CONTROL @Graph;SET ("MARKER1 Y":Y1(10),"MARKER2 Y":Y2(10))
  141. 1380  !
  142. 1390  ! Ratio markers
  143. 1400  !
  144. 1410       CASE 4
  145. 1420           CONTROL @Graph;SET ("MARKER":"RATIO")
  146. 1430           CONTROL @Graph;SET ("MARKER1 TRACE":1,"MARKER2 TRACE":2)
  147. 1440           CONTROL @Graph;SET ("MARKER1 X":X(10),"MARKER2 X":X(10))
  148. 1450           CONTROL @Graph;SET ("MARKER1 Y":Y1(10),"MARKER2 Y":Y2(10))
  149. 1460  !
  150. 1470  ! Exit program
  151. 1480  !
  152. 1490       CASE 5
  153. 1500           ASSIGN @Graph TO *! Delete XY GRAPH widget
  154. 1510           STOP
  155. 1520       END SELECT
  156. 1530       RETURN
  157. 1540  !
  158. 1550       END
  159.